4.0 Cautions
Please note the following when using the IR communication library provided by Nintendo:
- Use after turning off the prefetch buffer. The prefetch buffer must be disabled before using.
- The communication speed is specified depending on the "location of the data buffers for sending and receiving data" and the "Cartridge ROM wait cycles". Be sure to transfer data at a communication speed that conforms to the conditions.Even if you
are able to transfer data to your AGB (for development use) at speeds that are faster than the specified rate, it may not be possible to perform the same communication on the commercial AGBs, which show larger variations among machines.
-
Before communicating, make sure the following conditions for the sender and receiver agree with each other.
-Communication Speed
-Game Pak ROM wait cycles
-Use either the ROM version or the RAM version as the communication core.
-Data Buffer Location (CPU Internal RAM or CPU External RAM)
- If you discover any bugs or problems, please contact the Software Development Support Group at support@noa.com.
Regarding the CPU internal RAM version, pay attention to the following items:
With the version that operates in the CPU internal RAM, the ARM-coded communication core program is copied inside the CPU Internal RAM for fast no-wait operations. This requires a buffer for storing the communication core program in CPU Internal RAM.
- Be sure to set aside a buffer of the specified size.
--If the capacity is insufficient, the program will hang.
- Set the starting address of the program buffer to a multiple of 4. (32bit alignment)
--By setting the address to a multiple of 4, the CPU will operate in ARM mode.
If the address is not set to a multiple of 4, the program will execute as Thumb code and
hang.
- Be sure to set aside the program buffer in the CPU internal RAM.
--Execution of the ARM code requires a 32bit bus of CPU internal RAM.
The CPU external RAM has a 16bit bus, so the program will hang. Also, the communication speed is specified assuming that it is a nowait CPU internal RAM.
- Make sure you allocate the library BSS area to CPU internal RAM.
Notes for creating your own drivers for IR Communication
-
Set aside turnaround time as determined by IrDA for at least 0.5ms. Here, "turnaround time"
refers to the time when the Ir module is temporarily not receiving light signals because the light
transmitted by the module has entered the receiver side of the same module.
- At least 2ms are required before the Ir module can start up from shutdown mode. Make sure that the AGB verifies this and secures enough time. The Ir module is available for use when High is input to the SD terminal and Low is input to the SC terminal. In any other state, the module is in shutdown mode.
- Set aside a period of at least 1.4 µs for High output to the SO terminal. (Needs to be verified.)
If the period is shorter, the other machine may not be able to sense the received light. However, try to avoid a long period of time since this will greatly increase the power consumption.
- AGB's crystal resonator operates within a certain range of error (due to individual differences and to temperature variations). Please take this into consideration for high-speed protocols that reliability depends on the timer. (Synchronize periodically) The maximum difference is approximately +/-80ppm. (Need to confirm).
- In order to reduce power consumption, please set the Ir module to shutdown mode when not performing IR communication.
- Even if communication is interrupted due to shielding or external light, make sure you carry out error processing so there are no problems in operation.
- Be sure to perform sufficient tests such as aging and others to verify the reliability of the system.